\documentclass{article}

\usepackage[icelandic]{babel}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{amsmath}			% Notað fyrir \begin{align} ofl. 
\usepackage{float}				% Notað svo að figures floata á réttann stað með H specifiernum
\usepackage{fancyhdr}			% Notað fyrir header og footer
\usepackage{color}				% Litir í texta
\usepackage{pgf}
\usepackage{lscape}
\usepackage{url}

\usepackage[left=1.5cm,top=2.5cm,bottom=2.5cm,right=1.5cm]{geometry}

\title{Hönnunarskýrsla \\[0.2cm] 
	\normalsize{fyrir} \\[0.2cm] 
	\includegraphics[scale=0.75]{volva_logo.png} \\[0.2cm] 
	\Large{3 vikna verkefni vorið 2010}}
\author{Kristján Oddsson, \hspace{2.1cm} Sigurður Eyjólfsson,  \\Sonja Petra Stefánsdóttir, Viktor Alex Brynjarsson \\ \& \\  Þórunn Guðmundsdóttir.}

% Stilli header %
%\pagestyle{fancy}				% Gerir mér kleift að breyta header og footer
\fancyhead[RE,RO]{Hönnunarskýrsla}
\fancyhead[LE,LO]{Daníel Brandur Sigurgeirsson \& Kári Harðarson}
\fancyfoot[LE,LO]{Vor 2010}
\fancyfoot[RE,RO]{Háskólinn í Reykjavík}
\fancyfoot[CE,CO]{\thepage \\[0.12cm] \small{\LaTeX}}

\fancypagestyle{plain}{%
  \fancyhf{}                          % clear all header and footer fields
  \renewcommand{\headrulewidth}{0pt}
  \renewcommand{\footrulewidth}{0pt}
}


\begin{document}

\maketitle
\vfill
\begin{center}
\includegraphics[scale=0.10]{default_mono.png}
\end{center}
\pagebreak
\pagestyle{fancy}
% \setcounter{page}{1} % I don't like this one bit Lucy!

\section*{Forritunarreglur}

Allur kóði, athugasemdir og skjölun verkefnisins sem er skrifaður verður á ensku.

	Klasar verða nefndir samkvæmt "Pascal" hættinum. Property breytur verða eins og klasarnir og member breyturnar verða með litlum staf í upphafi og fylgja svo "Pascal" hættinum.
	
\begin{figure}[H]
	\begin{verbatim}
public class ClassController	// Dæmi um klasa skilgreiningu

private string jamesBondNumber = "007";	// Dæmi um private member breytu skilgreiningu

public string Agent007Name = "James Bond";	// Dæmi um public member breytu skilgreiningu

public bool HasLicenceToKill()	// Dæmi um public fall, private falla nöfn eru eins

public void SetAgentName(string agentName) // Dæmi um færibreytu. Færibreytur fylgja sömu reglum og 
    // private member breytur sömuleiðis breytur inní fallinu
	\end{verbatim}
\end{figure}

	Lagt verður meira uppúr "`Try to break stuff"' prófunum frekar en "`unit test"' prófunum. Ástæður fyrir þessu er að teymið sem um ræðir er ekki fjölmennt og tíminn naumur. Það er þó ekki þar með sagt að "`unit test"' próf verpi verða ekki skrifuð, heldur fer minna fyrir þeim heldur en ofangreindum "`Try to break stuff"' prófunum. Til að afla sér meiri upplýsingum um ákvörðunartöku hópsins um prófanir er lesendum bent á http://www.wilshipley.com/blog/2005/09/unit-testing-is-teh-suck-urr.html.
	
	Forritari skal binda (commit) kóðann eftir að hvert fall er skrifað og prófað til að tryggja að kóðinn "smitist ekki" (ghostbusters reglan).
	
	Töflur í gagnagrunninum skulu fylgja Pascal hættinum og dálkaheitin skulu fylgja member breytu reglunum. Ef dálkur er aðkomulykill (Foreign Key) skal hann heita töfluheitinu og svo dálkaheitinu í töfluni sem vísað er í með undirstriki á milli td. Tafla\_dálkur.
	
\begin{figure}[H]
	\begin{verbatim}
CREATE TABLE AgentsInField	-- Dæmi um skilgreiningu á töflu
(
    id INT IDENTITY(0, 1),	-- Í öllum töflum er id dálkur sem er með hlaupandi gildi
    nameOfAgent VARCHAR(55)	-- dálkanöfn fylgja sömu reglum og private member breytur í klösum
);
ALTER TABLE AgentsInField
ADD	-- Primary keys eru skilgreindir fyrir neðan töfluskilgreininguna til að hafa
    CONSTRAINT AgentsInField_PK PRIMARY KEY (id); -- nafnið á lyklunum skilgreint af okkur.
	
ALTER TABLE Category
ADD	-- Sömuleiðis eru aðkomulyklar skilgreindir sér til að einfalda uppstillingu SQL skriptunnar. 
    CONSTRAINT Category_parentCategory_id
        FOREIGN KEY (parentCategory_id)
        REFERENCES Category (id);
	\end{verbatim}
\end{figure}	

	Nota skal innbygða aðgangsstýringu ASP.nets og nota skal LINQ í gagnagrunnsvinnslu.
	
	Alltaf skal hjúpa allar færslur með slaufusvigum til að forðast mislestur á kóðanum.
	
	Nota skal XML documentation komment við alla klasa, public breytur og public föll í klösum. Þetta er gert til að auðvelda þeim sem útfæra klasann verkið.
	
	Sérstaklega ber að nefna að ef forritari hefur staðið fastur á vandamáli í lengur en 15mín ber öðrum meðlimum hópsins skylda til að koma þeim forritara í foosball leik sem fyrst. Vanræksla á þessum viðurlögum getur leitt til alvarlegra refsinga\footnote{Sjá: http://imgs.xkcd.com/comics/exploits\_of\_a\_mom.png}. 
	
\vfill	
	
\textit{Á næstu blaðsíðum eru skemu og rit sem unnin voru fyrir þessa skýrslu. Vert er að taka fram að myndunum hefur verið snúið á hlið 90$^\circ$ til að þær passi betur á síðurnar. Einnig fylgja myndirnar í upprunalegu formi með skýrslunni ef vandræði verða með að lesa þær í skýrslunni.}
	
\begin{landscape}
\section*{Töfluskema}
\begin{center}
\includegraphics[scale=0.75]{db_diagram.png} \\
\textit{Þetta er grunn uppbygging gagnagrunnsins. Gagnagrunnurinn er hannaður með það í huga að breytingar geta átt sér stað án þess að breyta þurfi grunn töflurnar. }
\end{center}
\end{landscape}

\begin{landscape}
\section*{Siglingaleiðarit}
\vspace{3.5cm}
\includegraphics[scale=0.38]{navi_diagram.png}
\end{landscape}

\begin{landscape}
\section*{Klasarit}
\begin{center}
\includegraphics[scale=0.53]{class_diagram.jpg} \\
\textit{Í ritinu er hægt að líkja "`Model"' klösunum við "`Entity"' klasa þar sem þeirra hlutverk er að geyma gögn sem eru sótt í gagnagrunninn. "`Service"' klasarnir eru þeir sem tengjast gagnagrunninum, sækja gögn og fylla "`Model"' klasana. Controller klasarnir nota Service klasana til að ná í gögn úr gagnagrunninum og áframsenda þau á View klasana.}
\end{center}
\end{landscape}

\section*{Lýsing á þróunarumhverfi}
\subsection*{Hönnunar- og Þarfagreiningarskýrslurnar}
\textit{Við notuðum nokkur forrit og þjónustur til að klára þessa skýrslu, hér fyrir neðan kemur listi yfir forritin og til hvers þau voru notuð.}

\begin{itemize}
\item Balsamiq Mockups
	\begin{itemize}
	\item Notað til þess að búa til frumgerðina.
	\end{itemize}
\item Adobe Photoshop
	\begin{itemize}
	\item Notað við smíð logo og frumgerðar.
	\end{itemize}
\item StarUML
\begin{itemize}
	\item Notað til þess að búa til klasaritið
	\end{itemize}
\item Microsoft SQL Server 2008
\begin{itemize}
	\item Töfluskemað var teiknað í SQL Server 2008
	\end{itemize}
\item Google Docs (http://docs.google.com/): 
\begin{itemize}
	\item Mjög mikið notað til þess að fara yfir ýmsa hluti og lagfæra það sem þurfti, auk þess var gott að vera með öll gögnin á einum stað sem allir hópameðlimir gátu nálgast. 
	\item Einnig var "`Drawing"' í Google Docs notað til að teikna upp siglingarleiðaritið.
	\end{itemize}
\item \LaTeX: 
\begin{itemize}
	\item Allar skýrslurnar voru settar upp í \LaTeX \ umhverfinu.
	\end{itemize}
\end{itemize}

\subsection*{Forritun}
\textit{Hópurinn hefur ákveðið að nota eftirfarandi forrit og tól þegar við byrjum að forrita.}

\begin{itemize}
\item Microsoft SQL server 2008
	\begin{itemize}
	\item Notað í gagnagrunnsvinnslu verkefnisins.
	\end{itemize}
\item Microsoft Visual Studio 2008
	\begin{itemize}
	\item Verður notað í forritunina ásamt því að nota MVC viðbótina.
	\end{itemize}
\item TortoiseSVN
	\begin{itemize}
	\item Subversion forrit sem verður notað af öllum meðlimum hópsins.
	\end{itemize}
\item Google Code Project hosting
	\begin{itemize}
	\item Stofnaður var Subversion aðgangur á Google Code fyrir verkefnið. Slóðin á aðganginn er \url{https://code.google.com/p/vulva/}
	\end{itemize}
\end{itemize}

Einnig var eftirfarandi forrit og þjónustur notuð en ekki þótti vert að nefna:
MSN Messenger, Tölvupóstur og \url{http://www.imgur.com/} (myndadeilingarsíða).

\section*{Frumgerð}
\begin{figure}[H]
\centering
\includegraphics[scale=0.75]{Frumgerd/2.png} \\
\caption{\textit{Forsíðan sem óskráður notandi fær upp þegar vefsíðan er heimsótt.}}
\end{figure}
\begin{figure}[H]
\centering
\includegraphics[scale=0.75]{Frumgerd/1.png} \\
\caption{\textit{Forsíðan sem skráður notandi fær upp þegar vefsíðan er heimsótt. Athygli er dregin að hlekkjunum sem birtast efst í hægra horninu á síðunni þegar notandi skráir sig inn.}}
\end{figure}
\begin{figure}[H]
\centering
\includegraphics[scale=0.75]{Frumgerd/3.png} \\
\caption{\textit{Þegar óinnskráður notandi skoðar einstaka myndband á sjónvarpsstöð er þetta sú skjámynd sem birtist þeim notanda.}}
\end{figure}
\begin{figure}[H]
\centering
\includegraphics[scale=0.75]{Frumgerd/4.png} \\
\caption{\textit{Þegar innskráður notandi skoðar einstaka myndband á sjónvarpsstöð er þetta sú skjámynd sem birtist þeim notanda.}}
\end{figure}
\begin{figure}[H]
\centering
\includegraphics[scale=0.75]{Frumgerd/5.png} \\
\caption{\textit{Leitarniðurstaða, skjámynd fyrir óinnskráða notendur.}}
\end{figure}
\begin{figure}[H]
\centering
\includegraphics[scale=0.75]{Frumgerd/6.png} \\
\caption{\textit{Leitarniðurstaða, skjámynd fyrir innskráða notendur.}}
\end{figure}
\begin{figure}[H]
\centering
\includegraphics[scale=0.75]{Frumgerd/7.png} \\
\caption{\textit{Það notendaviðmót sem kemur upp þegar innskráður notandi vill búa til sjónvarpsstöð. Augljóslega getur óinnskráður notandi ekki búið til sjónvarpsstöð.}}
\end{figure}
\begin{figure}[H]
\centering
\includegraphics[scale=0.75]{Frumgerd/8.png} \\
\caption{\textit{Notendaviðmótið sem er notað til að senda skilaboð til annarra notenda kerfisins.}}
\end{figure}
\begin{figure}[H]
\centering
\includegraphics[scale=0.75]{Frumgerd/9.png} \\
\caption{\textit{Listi yfir þau skilaboð sem notandi hefur fengið send. Á ensku kallast það "`Inbox"'.}}
\end{figure}
\begin{figure}[H]
\centering
\includegraphics[scale=0.75]{Frumgerd/10.png} \\
\caption{\textit{Þegar notandi (Dagskrágerðamaður) vill benda á myndefni fyrir þessa stöð sem hann hefur aðgang að þá slær hann inn lýsingu, setur inn slóðina á myndbandið og einnig getur hann hakað við hvaða flokki það tilheyrir svo ýtir hann á "`Benda á þátt"' til að klára að senda myndbandið inn. Einnig getur dagskrárgerðarmaður séð upplýsingar um stöðina og skilað inn athugasemdum ef einhverjar eru. Dagskrárgerðarmaðurinn getur einnig séð hver er sjónvarpsstjórinn yfir stöðinni og nánari upplýsingar um hann. Dagskrárgerðarmaðurinn sér yfirlit yfir dagskránna á stöðinni og getur bent sjónvarpsstjóranum á það ef eitthvað af efninu er óviðeigandi þá ýtir hann einfaldlega á þríhyrninginn undir þættinum og ábending sendist á sjónvarpsstjóra.}}
\end{figure}
\begin{figure}[H]
\centering
\includegraphics[scale=0.75]{Frumgerd/11.png} \\
\caption{\textit{Þegar notandi (Sjónvarpsstjóri) vill benda á myndefni fyrir þessa stöð sem hann hefur aðgang að þá slær hann inn lýsingu, setur inn slóðina á myndbandið og einnig getur hann hakað við hvaða flokki það tilheyrir svo ýtir hann á "`Benda á þátt"' til að klára að senda myndbandið inn. Einnig getur sjónvarpsstjóri séð upplýsingar um stöðina og skilað inn athugasemdum ef einhverjar eru. Sjónvarpsstjóri sér yfirlit yfir dagskránna á stöðinni. Flest öllum þessum upplýsingum getur sjónvarpsstjórinn breytt.}}
\end{figure}
\begin{figure}[H]
\centering
\includegraphics[scale=0.75]{Frumgerd/12.png} \\
\caption{\textit{Það viðmót sem notandi notar til að breyta grunnupplýsingum sínum.}}
\end{figure}
\begin{figure}[H]
\centering
\includegraphics[scale=0.75]{Frumgerd/13.png} \\
\caption{\textit{Listi yfir þær sjónvarpsstöðvar sem notandi tekur þátt í.}}
\end{figure}
\begin{figure}[H]
\centering
\includegraphics[scale=0.75]{Frumgerd/14.png} \\
\caption{\textit{Þegar notandi les skilaboð sem hann hefur fengið send.}}
\end{figure}
\begin{figure}[H]
\centering
\includegraphics[scale=0.75]{Frumgerd/15.png} \\
\caption{\textit{Það notendaviðmót sem dagkrárgerðarmaður fær upp þegar hann setur saman dagskrá fyrir sjónvarpsstöð.}}
\end{figure}
\begin{figure}[H]
\centering
\includegraphics[scale=0.75]{Frumgerd/16.png} \\
\caption{\textit{Listi yfir þá þætti sem eru í gangi í ákveðinni þáttarröð.}}
\end{figure}
\begin{figure}[H]
\centering
\includegraphics[scale=0.75]{Frumgerd/17.png} \\
\caption{\textit{Nýskráning notanda}}
\end{figure}

\end{document}